/**
 * <strong>Title : RepairOrderDao.java<br>
 * </strong> <strong>Package : cn.b.sky.mes.em.dao<br>
 * </strong> <strong>Description : </strong>@类注释说明写在此处@<br>
 * <strong>Create on : 2015年11月9日 下午4:58:19<br>
 * </strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 *          <strong>修改历史:</strong><br>
 *          修改人 | 修改日期 | 修改描述<br>
 *          -------------------------------------------<br>
 * <br>
 * <br>
 */
package cn.b.sky.mes.em.dao;

import java.util.List;

import cn.b.sky.mes.em.model.RepairOrderPart;
import org.apache.ibatis.annotations.Param;

import cn.b.sky.mes.em.model.RepairOrder;
import cn.b.sky.mes.em.model.RepairOrderCause;
import cn.b.sky.mes.em.model.condition.RepairOrderCondition;

/**
 * <strong>Title : RepairOrderDao.java<br></strong>
 * <strong>Package : cn.b.sky.mes.em.dao<br></strong>
 * <strong>Description : </strong>维修持久层<br> 
 * <strong>Create on : 2015年11月9日 下午4:58:19<br></strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人 | 修改日期 | 修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface RepairOrderDao {

  /**
   * <strong>Title : selectRepairOrderListByCondition<br></strong>
   * <strong>Description : </strong>条件查询维修单<br> 
   * <strong>Create on : 2015年11月10日 上午9:47:59<br></strong>
   * <p>
   * @param condition
   * @return
   * List<RepairOrder>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<RepairOrder> selectRepairOrderListByCondition(RepairOrderCondition condition);

  /**
   * <strong>Title : selectRepariOrderCountByCondition<br></strong>
   * <strong>Description : </strong>条件查询维修单总数<br> 
   * <strong>Create on : 2015年11月10日 上午9:48:17<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int selectRepariOrderCountByCondition(RepairOrderCondition condition);

  /**
   * <strong>Title : insertRepairOrder<br></strong>
   * <strong>Description : </strong>新增报修单<br> 
   * <strong>Create on : 2015年11月10日 上午9:48:31<br></strong>
   * <p>
   * @param order
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertRepairOrder(RepairOrder order);

  /**
   * <strong>Title : getRepairOrderStatus<br></strong>
   * <strong>Description : </strong>获取维修单维修状态<br> 
   * <strong>Create on : 2015年11月10日 上午9:49:18<br></strong>
   * <p>
   * @param orderCode
   * @param siteCode
   * @return
   * String
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  String getRepairOrderStatus(@Param("orderCode") String orderCode, @Param("siteCode") String siteCode);

  /**
   * <strong>Title : updateRepairOrder<br></strong>
   * <strong>Description : </strong>更新维修单<br> 
   * <strong>Create on : 2015年11月10日 上午9:51:26<br></strong>
   * <p>
   * @param order
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void modifyRepairOrder(RepairOrder order);

  /**
   * <strong>Title : getRepairOrder<br></strong>
   * <strong>Description : </strong>获得维修单实体<br> 
   * <strong>Create on : 2015年11月10日 上午10:15:27<br></strong>
   * <p>
   * @param orderCode
   * @param siteCode
   * @return
   * RepairOrder
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  RepairOrder getRepairOrder(@Param("orderCode") String orderCode, @Param("siteCode") String siteCode);

  /**
   * <strong>Title : deleteRepairOrder<br></strong>
   * <strong>Description : </strong>删除维修单<br> 
   * <strong>Create on : 2015年11月10日 下午4:20:58<br></strong>
   * <p>
   * @param orderCode
   * @param siteCode
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人  | 修改日期  | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteRepairOrder(@Param("orderCode") String orderCode, @Param("siteCode") String siteCode);

  /**
   * <strong>Title : receiveRepairOrder<br></strong>
   * <strong>Description : </strong>根据业务更新信息<br> 
   * <strong>Create on : 2015年11月11日 下午2:50:44<br></strong>
   * <p>
   * @param order
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateRepairOrder(RepairOrder order);

  /**
   * <strong>Title : deleteRepairOrderPart<br></strong>
   * <strong>Description : </strong>删除备件表<br> 
   * <strong>Create on : 2015年11月12日 下午2:44:43<br></strong>
   * <p>
   * @param orderCode
   * @param siteCode
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteRepairOrderPart(@Param("orderCode") String orderCode, @Param("siteCode") String siteCode);

  /**
   * <strong>Title : insertRepairOrderPart<br></strong>
   * <strong>Description : </strong>插入维修单备件<br> 
   * <strong>Create on : 2015年11月10日 上午9:51:42<br></strong>
   * <p>
   * @param orderCode
   * @param partCode
   * @param quantity
   * @param siteCode
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人  | 修改日期  | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertRepairOrderPart(RepairOrderPart part);

  /**
   * <strong>Title : deleteRepairOrderCause<br></strong>
   * <strong>Description : </strong>删除维修单下错误原因<br> 
   * <strong>Create on : 2015年11月12日 下午2:56:19<br></strong>
   * <p>
   * @param orderCode
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteRepairOrderCause(@Param("orderCode") String orderCode, @Param("siteCode") String siteCode);

  /**
   * <strong>Title : insertRepairOrderCause<br></strong>
   * <strong>Description : </strong>插入维修单下错误原因<br> 
   * <strong>Create on : 2015年11月12日 下午2:56:25<br></strong>
   * <p>
   * @param cause
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertRepairOrderCause(RepairOrderCause cause);

  /**
   * <strong>Title : getRepairOrderWithCausePart<br></strong>
   * <strong>Description : </strong>连带备件单和故障原因<br> 
   * <strong>Create on : 2015年11月13日 上午9:38:37<br></strong>
   * <p>
   * @param id
   * @param siteCode
   * @return
   * RepairOrder
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<RepairOrder> getRepairOrderWithCausePart(@Param("orderCode") String orderCode, @Param("siteCode") String siteCode);

  List<RepairOrderCause> getRepairOrderCause(@Param("orderCode") String orderCode, @Param("siteCode") String siteCode);

  List<RepairOrderPart> getRepairOrderPart(@Param("orderCode") String orderCode, @Param("siteCode") String siteCode);

  RepairOrder getOrderByBusinessKey(@Param("businessKey") String businessKey, @Param("siteCode") String siteCode);

  void updateRepairOrderByBusinessKey(RepairOrder order);

}
